#include "user.h"
#include "page.h"
#include "contact.h"
#include "sig.h"

/*
    经典测试：重复注册 注销后注册样式没清除
*/

/*
    功能：页面逻辑处理
    参数：
        0 退出程序
        1 重启
*/
int pageControl()
{
    //创建用户信息
    PUserType pUser = CreateUserInfo();
    if(NULL == pUser)
    {
        return 0;//创建失败退出程序
    }

    //创建消息队列
    int res = CreateMsgQ();
	if(res == -1)
	{
		return -1;
	}

    //首先进入起始界面
    while(1) //未登录
    {
        int res = initialPage(pUser);
        if(1 == res)
        {
            //资源释放
            UserFree(&pUser);
            return 0;//用户退出
        }
        else if(-1 == res)
        {
            printf("\33[0m");
            continue;//若程序异常则重新登录
        }
        else
        {
            break;//登录成功
        }
    }
    
    //初始化通讯录表
    PSeqListType pContactList = InitContactTable(pUser);
    if(pContactList == NULL)
    {
        exitPage(&pUser, NULL);//用户退出
        return 0;
    }

    //捕获ctrl+c信号 退出时资源释放，用户登出
    SignalExitUser(&pUser, &pContactList);

    //进入主页面
    while(1)
    {
        res = HomePage(pUser, pContactList);
        if(0 == res)
        {
            break;//用户退出
        }
        else if(1 == res)
        {
            //退出
            exitPage(&pUser, &pContactList);
            //重启程序
            return 1;
        }
        else
        {
            //程序异常则重新进入主页面
            continue;
        }
    }

    //退出直接返回
    exitPage(&pUser, &pContactList);
    return 0;
}

int main(int argc, char const *argv[])
{
    while(pageControl() != 0);
    return 0;
}
